SQLでkey valueのカラムが分かれているものを一つに結合する
Note
key=valueの形にして結合したい。 例えばURLのパラメータなどがkeyとvalue`でテーブル上で分かれている場合に一つのURLにSQL上で結合する
| id | key | value |
|---|---|---|
| 1 | source | social |
| 1 | medium | |
| 1 | campaign | story |
このようなテーブルを以下のような形に修正する
| id | tags |
|---|---|
| 1 | source=social&medium=instagram&campaign=story |
手順
1. keyとsourceをkey=sourceの形に変換する
with table as (
select id, concat(key, '=', value) as data from raw
)
以下のようなテーブルができる
| id | data |
|---|---|
| 1 | source=social |
| 1 | medium=instagram |
| 1 | campaign=story |
2. key=sourceを&で結合する
select id, string_agg(data, '&') from table group by id
以下のようなテーブルができる
| id | tags |
|---|---|
| 1 | source=social&medium=instagram&campaign=story |
※ concatは文字列結合
※ string_aggはカラムの結合